3.6.1.10 r-GRF0
GRF0オペランドの文法は次の通りである。
code:txt
$(l|ll)r<addr>[v<adri>] #Auto stride mode
|$(l|ll)r<flat_addrs> #Flat mode
1 番目の文法がAuto strideモード、 2 番目の文法がFlatモードである(両モードについては第1.
2節を参照)。
ここでは入力の符号反転(3.6.9.22 入力符号反転)、精度拡張(3.6.9.23 入力の精度拡張)、丸め(3.6.9.24 入力の精度縮減)、出力のマスク適用(3.6.2.1 書き込みマスク適用)については省略する。
括弧で付したそれぞれの節を参照のこと。
[(l|ll)]はアクセス語長指定である。
空であれば単語、lであれば長語、llであれば 2 長語となる。
Auto strideモードでは、によりGRF0内の単語単位のアドレスを指定する。
1 命令 4 サイクルの間この値が最終的なアドレス値に加算される。
vはサイクル間のアドレスインクリメントを指定する。
vを付けなかった場合、インクリメント幅は 0 となる。
<addr>は単語単位のインクリメント幅で、値を省略するとアクセス語長での 1 語分、すなわち連続領域を重複なくアクセスするように設定される。
Flatモードでは、<flat_addrs>にて[,,,]の形式で各サイクルのアドレスを直接指定する。
ここで角括弧([])は実際にこの記号を記述することを意味し、オプションの意味ではない。
アドレスは各サイクルでアクセス語長にアラインしていないとならない。
よって、Auto strideモードではa ddrとadriはいずれも、長語アクセスなら 2 の倍数、 2 長語アクセスなら 4 の倍数になっていないとならない。